package com.neuedu.function;

import java.io.File;

public class FileExample {
/**
 *   使用递归实现文件夹中文件的显示
 *    显示：文件名，路径（绝对路径），文件大小
 *    
 *    首先判断给定路径是文件还是文件夹，
 *       如果是文件：直接显示文件名，路径，大小
 *       如果是目录：进入到目录中，判断目录中文件或文件夹，
 *                          如果是文件：直接显示文件名，路径，大小
 *                          如果是目录：进入到目录中，判断目录中文件或文件夹
 *                              。。。。。。
 *                          当目录中只有文件时，输出文件信息，结束
 *                          目录中没有任何文件和文件夹时：直接结束         
 *    
 *    
 * @param args
 */
	
	/**
	 * n:为了美化：
	 *   同一级目录，在同一列
	 * @param file
	 * @param n
	 */
	public static void fun(File file,int n) {
		 if(file.isDirectory()) {
			 //当file为目录时，提取目录的文件和子目录
			 File[] listFiles = file.listFiles();//shift+alt+l
			 //当目录中为空时，直接退出
			 if(listFiles.length==0) {
				 return;
			 }
			 n++;//同一目录下的文件和文件夹的列是相同的
			 //当目录中不为空时，目录中的每个文件或者子目录都要进行判断，调用fun
			 for(File f:listFiles) {
				 
				 fun(f,n);
			 }
			 
		 }else if(file.isFile()) {//当是文件时：直接输出文件的信息
			 for(int i=0;i<n;i++) {//显式出文件的级别
				 System.out.print("\t");
			 }
			 System.out.print(file.getName()+"   "+file.getAbsolutePath()+"  "+file.length());
		     System.out.println();
		 }
	}
	
	public static void main(String[] args) {
	
       File file=new File("D:\\temp");
       fun(file,0);//0：根目录。
	}

}
